当前位置: 首页 > wzjs >正文

自己怎样做公司广告视频网站爱网站关键词查询工具长尾

自己怎样做公司广告视频网站,爱网站关键词查询工具长尾,大型门户网站设计解决方案,网站建设什么最重要在C中,对象的初始化可以通过两种方式完成:构造函数体内的赋值和使用成员初始化列表。这两种方式有本质区别,理解它们的差异对编写高效、正确的C代码至关重要。 一、基本概念对比 1. 构造函数体赋值 class MyClass { int a; std::string b; …

在C++中,对象的初始化可以通过两种方式完成:构造函数体内的赋值和使用成员初始化列表。这两种方式有本质区别,理解它们的差异对编写高效、正确的C++代码至关重要。

 

一、基本概念对比

 

1. 构造函数体赋值

 

class MyClass

{

    int a;

    std::string b;

public:

    MyClass(int x, const std::string& y)

    {

        a = x; // 赋值操作

        b = y; // 赋值操作

    }

};

 

 

2. 初始化列表

 

class MyClass

{

    int a;

    std::string b;

public:

    MyClass(int x, const std::string& y) 

        : a(x), // 初始化

          b(y) // 初始化 

    {

        // 构造函数体

    }

};

 

 

二、关键区别

 

1. 执行时机不同

 

- 初始化列表:在对象构造阶段完成初始化

- 构造函数体赋值:对象已构造完成后进行赋值

 

2. 性能差异

 

- 对于类类型成员:

- 初始化列表直接调用拷贝构造函数

- 构造函数体赋值会先调用默认构造函数,再调用赋值运算符

 

3. 必须使用初始化列表的情况

 

以下情况必须使用初始化列表:

 

- const成员变量

- 引用类型成员

- 没有默认构造函数的类类型成员

- 基类初始化

 

三、初始化列表详解

 

1. 语法规则

 

ClassName::ClassName(params) 

    : member1(value1), 

      member2(value2),

      ...

{

    // 构造函数体

}

 

 

2. 初始化顺序

 

初始化顺序由成员在类中的声明顺序决定,与初始化列表中的顺序无关。

 

class Example

{

    int a;

    int b;

public:

    Example(int x) : b(x), a(b) {} // 危险!a先初始化,此时b未初始化

};

 

 

3. 基类和成员混合初始化

 

class Derived : public Base

{

    int x;

    std::string s;

public:

    Derived(int a, const std::string& str)

        : Base(a), // 基类初始化

          x(a), // 成员变量初始化

          s(str) // 成员变量初始化

    {

        // 构造函数体

    }

};

 

 

四、构造函数体赋值的适用场景

 

虽然初始化列表通常是更好的选择,但在以下情况可能需要在构造函数体内赋值:

 

1. 需要复杂逻辑初始化

 

class ComplexInit

{

    int value;

public:

    ComplexInit(bool flag)

      {

        if(flag)

       {

            value = computeValue1();

        }

       else

       {

            value = computeValue2();

        }

    }

};

 

 

2. 需要异常处理

 

class FileHandler

{

    FILE* file;

public:

    FileHandler(const char* filename)

   {

        file = fopen(filename, "r");

        if(!file)

       {

            throw std::runtime_error("File open failed");

        }

    }

};

 

 

五、性能优化建议

 

1. 优先使用初始化列表:特别是对于类类型成员

2. 简单类型成员:内置类型(int, float等)两种方式性能差异不大

3. 避免重复初始化:使用初始化列表避免不必要的默认构造+赋值

4. 保持声明顺序与初始化顺序一致:提高代码可读性,避免潜在问题

 

六、综合示例

 

class Student

{

    const int id; // const成员

    std::string name; // 类类型成员

    int& ageRef; // 引用成员

    double scores[3]; // 数组

public:

    Student(int sid, const std::string& n, int& age)

        : id(sid), // const成员必须初始化

          name(n), // 直接初始化,效率高

          ageRef(age), // 引用必须初始化

          scores{0,0,0} // 数组初始化

    {

        // 构造函数体内可进行复杂操作

        if(name.empty())

       {

            name = "Unknown";

        }

    }

};

求关注!!!! 

http://www.dtcms.com/wzjs/264317.html

相关文章:

  • 做网站公司(深圳信科)网站seo方案案例
  • Wordpress搜索html页面专业排名优化工具
  • wordpress建哪些网站网站自己推广
  • 杭州如何设计网站首页网站seo搜索引擎的原理是什么
  • 龙岗网站制作新闻石家庄疫情最新情况
  • 调兵山 网站建设网络营销服务公司
  • 重庆南川网站制作公司哪家好制作一个网站大概需要多少钱
  • 卢氏县住房和城乡建设局网站怎么查询最新网站
  • 东莞正规的企业网站设计多少钱百度帐号登录
  • 手机软件下载网站wap模板专业网站优化外包
  • 做家居网站设计网站优化排名软件网站
  • 个人网站建设方案书模板seo优化关键词排名
  • 浏览器怎么做能不拦截网站今天新闻头条
  • 给网站做备案考证培训机构
  • 武汉永旺建设集团有限公司网站上海百度推广排名优化
  • 做网站找什么公司工作如何开展网络营销
  • 做国际贸易哪个网站好竞价推广套户渠道商
  • 网页网站公司如何做备份济南疫情最新情况
  • 济南营销型网站建设域名注册网站有哪些
  • 做品牌网站找谁seocui cn
  • 免费自己建立网站新手电商运营从哪开始学
  • 东阿企业做网站推广常州网站关键词推广
  • b2b批发网站大全凡科建站app
  • 自己做网站服务器可以吗上海关键词推广公司
  • dw外部网站链接怎么做郑州seo顾问热狗
  • 还有那个网站可以做兼职呢百度云网盘免费资源
  • 秦皇岛做网站优化公司电商seo优化是什么
  • 网站改版新闻买域名要多少钱一个
  • 公司微网站建设谷歌搜索引擎下载安装
  • 郑州 做网站seo实战