c++的初始化与清除

《c++编程思想》阅读笔记(4)

第4章 初始化与清除

第2章利用了一些分散的典型c语言库的构件,并把它们封装在一个struct总,从而在库的应用方面做了有意义的改进(从现在起,这个抽象数据类型称为类)


1)这样用类名隐藏了类内部的函数名,并且通过设立处理界限,意味着数据类型的内部机制对设计者来说是可控的和能自行处理的。封装和实现的隐藏大大地改善了库的使用。而安全性包括初始化和清除两个方面。在c语言中,如果一个程序员忘记了初始化或清除一个变量,就会导致一大段程序错误。特别是当用户不知如何对一个struct初始化,甚至不知道必须要初始化时。。。清除是一个特殊的问题,因为c程序员一旦用过一个变量后就把它给忘记了,所以对一个库的struct来说,必要的清除工作往往被遗忘了。在c++中,初始化和清除的概念是简化类库使用的关键所在,并且可以减少那些由于用户忘记这些操作而引起的许多细微错误


2)在c++中,初始化是在太重要了,所以不能把它留给用户来完成。类的设计者可以通过提供一个叫做构造函数的特殊函数来保证每个对象都正确地初始化。如果一个类有构造函数,编译器在创建对象时就自动调用这一函数,这一切在用户是用他们的对象之前就已经完成了。对用户来说,是否调用构造函数并不是可选的,它是由编译器在对象定义时完成的。

3)函数名字必须考虑两点:首先这个名字不能与类的其他成员函数冲突,其次,因为该函数是由编译器调用的,所以编译器必须总能知道调用哪个函数。由此得出:构造函数的名字和类的名字一样。这使得

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用\[1\]:直接上代码,不解释 void run() { vector<int> vec = {1, 2, 3, 4, 5, 6}; vector<int> v1(vec.begin(), vec.begin()+3); vector<int> v2(vec.end()-2, vec.end()); for(int i=0; i<v1.size(); i++) { cout<<v1\[i\]<<" "; } cout<<endl; for(int j=0; j<v2.size(); j++) { cout<<v2\[j\]<<" "; } cout<<endl; } 。 引用\[2\]:还可以直接进行初始化。 void run3() { vector<vector<int>> array(3, vector<int>(2)); for(int i=0; i<array.size(); i++) { for(int j=0; j<array\[0\].size(); j++) { cout<<array\[i\]\[j\]<<" "; } cout<<endl; } vector<vector<int>> array2(3, vector<int>(2, 1)); for(int i=0; i<array2.size(); i++) { for(int j=0; j<array2\[0\].size(); j++) { cout<<array2\[i\]\[j\]<<" "; } cout<<endl; } } 。 引用\[3\]:文章目录 前言一、使用步骤1.创建数组2.初始化 总结 前言 刷题时碰到需要用vector创建二维数组的情况,简单记录一下 提示:以下是本篇文章正文内容,下面案例可供参考 一、使用步骤 1.创建数组 代码如下(示例): #include<iostream> #include<vector> using namespace std; int mian() { vector<vector<int>>v;//定义一个二维数组,每个元素是int类型 //外层装的元素的vector,内层装的是int } // vector<vector<int>> transposed(m, vector<int>(n));//创建一个m行n列的二维数组transposed; 2.初始化 代码如下(示例): int main() { vector<vector<int>>v; //第一种方式 v.resize(4);//将内层初始化为4个vector<int>的数组 for(int i=0;i<4;++i) { v\[i\].resize(3);//初始化内参的每一个vector<int>,数据数量为3 } //初始化完成后,v是一个4*3的二维数组 //第二种方式 vector<vector<int>>v;//大容器 vector<int>c(3);//建立一个数据量为3的一维数组 c.push_back(1);//插入数据 c.push_back(2); c.push_buck(3); v.push_back(c);//将c插入v中 c.clear();//清除c中的数据 //重复以上过程4次,创建一个4*3的二维数组 } 总结 由于C11新特性,第二种单个插入元素可以直接写成vectorv{1,2,3}; 可以拿 { } 直接一步插入所有数据。。 问题:c++ 初始化二维数组全是0 回答: 在C++中,可以使用vector来初始化二维数组,并且可以指定初始值。引用\[2\]中的代码演示了两种初始化二维数组的方式。第一种方式是使用resize函数来设置外层和内层的大小,然后使用循环来初始化每个元素。第二种方式是先创建一个一维数组,然后使用push_back函数将其插入到二维数组中,重复这个过程来创建二维数组。在这两种方式中,如果没有指定初始值,那么默认情况下所有元素都会被初始化为0。所以,如果你想要初始化的二维数组全是0,可以使用上述的方法来实现。 #### 引用[.reference_title] - *1* *2* [c++ vector二维数组初始化与vector切片](https://blog.csdn.net/bitcarmanlee/article/details/126016188)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [C++ | C++中二维数组创建与初始化](https://blog.csdn.net/weixin_52983138/article/details/125799580)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值