建设银行网站进不去电子商务网站建设的试卷
web/
2025/10/4 18:07:31/
文章来源:
建设银行网站进不去,电子商务网站建设的试卷,郑州模板建站定制网站,网站备案密码是什么1、初始化列表 初始化列表#xff1a;以一个冒号开始#xff0c;接着是一个以逗号分隔的数据成员列表#xff0c;每个成员变量后面跟一个放在括号中的初始值或表达式。 class Date
{
public:Date(int year, int month, int day): _year(year), _month(month), _…1、初始化列表 初始化列表以一个冒号开始接着是一个以逗号分隔的数据成员列表每个成员变量后面跟一个放在括号中的初始值或表达式。 class Date
{
public:Date(int year, int month, int day): _year(year), _month(month), _day(day){}
private:int _year;int _month;int _day;
};【注意】 1. 每个成员变量在初始化列表中只能出现一次【初始化只能初始化一次】2. 类中包含以下成员必须放在初始化列表位置进行初始化 ✅引用成员变量 ✅const成员变量 ✅自定义类型成员(且该类没有默认构造函数时) class A
{
public:A(int a):_a(a){}
private:int _a;
};class B
{
public:B(int a, int ref):_aobj(a),_ref(ref),_n(10){}private:A _aobj; //【没有默认构造函数】int _ref; //【引用】const int _n; //【const】
};3. 尽量使用初始化列表初始化因为不管你是否使用初始化列表对于自定义类型成员变量一定会先使用初始化列表初始化。 4. 成员变量在类中声明次序就是其在初始化列表中的初始化顺序与其在初始化列表中的先后次序无关。 2、explicit关键字 构造函数不仅可以构造与初始化对象对于单个参数或者除第一个参数无默认值其余均有默认值的构造函数还具有类型转换的作用 1单参构造函数没有使用 explicit 修饰具有类型转换作用 2explicit 修饰构造函数禁止类型转换 — explicit 去掉之后代码可以通过编译 class A
{
public://explicit A(int i)A(int i):_a(i){cout A(int i) endl;}A(const A aa):_a(aa._a){cout A(const A aa) endl;}~A(){cout ~A() endl;}private:int _a;
};class SeqList
{
public:void PushBack(const A x){_a[_size] x;}size_t size() const{return _size;}//读const A operator[](size_t i) const{assert(i _size);return _a[i];}//读/写A operator[](size_t i){assert(i _size);return _a[i];}private:A* _a (A*)malloc(sizeof(A) * 10);size_t _size;size_t _capacity;
};int main()
{A aa1(1);//单参数构造函数的隐式类型转换//用2调用A构造函数生成一个临时对象再用这个对象去拷贝构造aa2//编译器会再优化优化用2直接构造 A aa2 2;const A aa3 3; //【隐式类型转换会生成一个临时变量具有常性】SeqList s;A aa3(3);s.PushBack(aa3);A aa4(2);s.PushBack(aa4);s.PushBack(3); //隐式类型转化s.PushBack(4); //隐式类型转化//有名对象【特点生命周期在当前局部域】A aa5(6);//匿名对象【特点生命周期只在这一行】A(7);A aa6(7);SeqList().PushBack(aa6); //用匿名对象去调用return 0;
}3、static成员
1概念 声明为 static 的类成员称为类的静态成员用 static 修饰的成员变量称之为静态成员变量用 static 修饰的成员函数称之为静态成员函数。静态成员变量一定要在类外进行初始化面试题实现一个类计算程序中创建出了多少个类对象。 2特性 静态成员为所有类对象所共享 不属于某个具体的对象存放在静态区不算类的大小静态成员变量必须在类外定义定义时不添加 static 关键字。类中只是声明声明不能给缺省值因为缺省值是给初始化列表用的是属于某个创建的对象的不是所有对象的。类静态成员即可用 类名 :: 静态成员 或者 对象 . 静态成员 来访问静态成员函数 没有隐藏的this指针不能访问任何非静态成员静态成员也是类的成员受 public、protected、private 访问限定符的限制一般有静态成员变量就提供静态成员函数 【面试题】实现一个类计算程序中创建出了多少个类对象。 class A
{
public:A(){n;m;}A(const A t){n;m;}~A(){m--;}//静态成员函数没有this指针//static int GetM()static int GetM(){return m;}static void Print(){cout n m endl;}private://声明//累积创建了多少个对象 //static int n 0; //不能给缺省值因为缺省值是给初始化列表用的是属于某个创建的对象的static int n; //静态成员变量属于所有对象属于整个类存在静态区不算类的大小//正在使用的还有多少个对象static int m;
};//定义【必须声明定义分离】
int A::n 0;
int A::m 0;A Func(A aa)
{return aa;
}int main()
{A();A();A::Print();//A::GetM();A aa1;Func(aa1);aa1.Print();return 0;
}【问题】 静态成员函数可以访问非静态成员变量吗【❌】【没有 this 指针】静态成员函数可以调用非静态成员函数吗【❌】非静态成员函数可以调用类的静态成员函数吗【✅】 OJ题求123…n 4、友元 友元提供了一种突破封装的方式有时提供了便利。但是友元会增加耦合度破坏了封装所以友元不宜多用。 1友元函数 友元函数可以直接访问类的私有成员它是定义在类外部的普通函数不属于任何类但需要在类的内部声明声明时需要加 friend 关键字。❗注 1友元函数可访问类的私有和保护成员但不是类的成员函数 2友元函数不能用 const 修饰 3友元函数可以在类定义的任何地方声明不受类访问限定符限制 4一个函数可以是多个类的友元函数 5友元函数的调用与普通函数的调用原理相同 class Date
{//友元声明friend ostream operator(ostream _cout, const Date d);friend istream operator(istream _cin, Date d);public:Date(int year 1900, int month 1, int day 1): _year(year), _month(month), _day(day){}private:int _year;int _month;int _day;
};//重载流插入
ostream operator(ostream _cout, const Date d)
{_cout d._year 年 d._month 月 d._day 日 endl;return _cout;
}//重载流提取不能加const修饰d因为要输入值
istream operator(istream _cin, Date d)
{_cin d._year d._month d._day;return _cin;
}int main()
{Date d;cin d;cout d;return 0;
}2友元类 友元类的所有成员函数都可以是另一个类的友元函数都可以访问另一个类中的非公有成员。 友元关系是单向的不具有交换性【比如下述 Time 类和 Date 类在 Time 类中声明 Date 类为其友元类那么可以在 Date 类中直接访问 Time 类的私有成员变量但想在 Time 类中访问 Date 类中私有的成员变量则不行】友元关系不能传递【如果C是B的友元 B是A的友元则不能说明C时A的友元】友元关系不能继承 class Time
{friend class Date; //声明日期类为时间类的友元类则在日期类中就直接访问 Time 类中的私有成员变量public:Time(int hour 0, int minute 0, int second 0): _hour(hour), _minute(minute), _second(second){}private:int _hour;int _minute;int _second;
};class Date
{
public:Date(int year 1900, int month 1, int day 1): _year(year), _month(month), _day(day){}void SetTimeOfDate(int hour, int minute, int second){//直接访问 Time 类私有的成员变量_t._hour hour;_t._minute minute;_t._second second;}private:int _year;int _month;int _day;Time _t;
};5、内部类 概念如果一个类定义在另一个类的内部这个内部类就叫做内部类。内部类是一个独立的类 它不属于外部类更不能通过外部类的对象去访问内部类的成员。外部类对内部类没有任何优越的访问权限。注意内部类就是外部类的友元类 参见友元类的定义内部类可以通过外部类的对象参数来访问外部类中的所有成员。但是外部类不是内部类的友元。特性 1内部类可以定义在外部类的 public、protected、private 都是可以的。 2注意内部类可以直接访问外部类中的 static、private 成员不需要外部类的对象/类名。 3sizeof(外部类)外部类和内部类没有任何关系。 //1B类受A类域和访问限定符的限制其实他们是两个独立的类
//2内部类默认就是外部类的友元类
class A
{
public:class B // B天生就是A的友元{private:int _b;};private:int _a;
};int main()
{cout sizeof(A) endl; //4A aa1;//B bb1; //errorA::B bb1;return 0;
}6、拷贝对象时的一些编译器优化 隐式类型连续构造拷贝构造 - 优化为直接构造一个表达式中连续构造拷贝构造 - 优化为一个构造一个表达式中连续拷贝构造拷贝构造 - 优化一个拷贝构造一个表达式中连续拷贝构造赋值重载 - 无法优化
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/86914.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!