关于构造函数
今天看了c++的构造函数,发现有许多种构造函数,复制构造还有赋值运算符什么的,我想问一下,在实际开发中有必要把他们都写出来吗,大家是不是都写啊,是不是类中元素包含指针就要写啊,菜鸟问题大神别不鸟我啊 c++
[解决办法]
基本上是,如果类中成员有指针的
那么要么你把 赋值和拷贝 屏蔽了 要么就实现了
[解决办法]
构造函数常用的是默认构造函数和拷贝构造函数,这两个经常用到,系统提供默认的,常常被重载。
类中不含有指针的也经常被重载,类中如果含有指针则一定要重载,因为编译器不会给指针赋初值。
A{
A(); //默认构造函数
A(A &a); //拷贝构造函数
}
[解决办法]
不一定,你可以禁止你的class被copy或assign
c++98
class A
{
private: //将copy constructor和copy assignment宣告为private,阻止copy
A(A const&);
A& operator=(A const&);
};
class A
{
public:
A(A const&) = delete;
A& operator=(A const&) = delete;
};
class A
{
private:
//shared_ptr会负责"shared"资料
std::shared_ptr<int> data_;
}
//....
A a, b;
a = b; //a和b的data_指向同一笔资料
class A
{
private:
std::vector<int> data_; //自动处理copy和assignment的问题
}