C++学习:第三章C++语言基础 - (五)构造器

1. 类的初始化 - 构造器

  1. 可以将声明放在头文件中,将实现放在cpp文件中
  2. 类的初始化格式必须有对应的构造器
  3. 每个对象的构造器都会被执行,且只会被执行一次。
  4. 类的声明也可以使用默认参数
  5. 声明类时尽量避免Person p();这样的形式,因为这样声明对象容易与构造函数混淆。可以通过默认值或者其他办法避免这种格式。
  6. 在内存中函数和变量是分开储存的,但是如何同一调用、不会混乱?其实 对象.方法(参数)在编译器中是方法(&对象,参数)
  7. 每个成员函数有个隐含的形参this,this里面存放的是该对象的地址。就是调用该成员函数的指针。因此可以写成(*this).name = name;用简便写法this->name = name;
#include <iostream>
#include <string>
using namespace std;

class F{
    int n;
    int d;
    int f;
public:
    F(int n = 0, int d = 1);
    F(int n = 0, int d = 1, int f = 2);
    void print(bool newLine = true);
    void input();
};

//几种初始化方法
F::F(int n, int d){
    F::n = n;
    this->d = d;
    (*this).f = 0;
}


//老师的例子我这里不对
//F::(int n, int d, int f):n(n),d(d),f(f){
//    cout << "n = " << n
//        << "; d = " << d
//        << "; f = "<< f
//        << endl;
//}

int main(){

    getchar();
    return 0;
}

2. 类的拷贝构造函数

这个函数并不需要可以去完成,如果没有写系统会自动添加

#include <iostream>
using namespace std;

class CExample {
private:
    int a;
    int aa;
public:
    CExample(int b)
    { a=b;}
    
    //这个就是拷贝函数
    //是个初始化函数的写法,只有一个传入参数就是本类类型
    //aa的初始化方法是一种简便写法
    CExample(const CExample& C) :aa(aa) {
        a=C.a;
    }
    void Show ()  {
        cout<<a<<endl;
    }
};

int main()
{
    CExample A(100);
    CExample B=A;
    B.Show ();
    return 0;
} 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值