华硕z97主板bios华硕主板设置快速启动动

问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
include &iostream&
class text{public:
text(int m,int n): a(m),b(n){}
int main(){
**text *p=new text[2]**;/*用p指向创建的对象数组*/
尝试用以上代码用new创建一个对象数组,发现不行,是哪里不对吗?为什么用new又可以为结构体创建对象数组?
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
加个无参数的构造函数试试text(){}
分享到微博?
你好!看起来你挺喜欢这个内容,但是你还没有注册帐号。 当你创建了帐号,我们能准确地追踪你关注的问题,在有新答案或内容的时候收到网页和邮件通知。还能直接向作者咨询更多细节。如果上面的内容有帮助,记得点赞 (????)? 表示感谢。
明天提醒我
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:
扫扫下载 App22:10 提问
C++中字符数组转 string类引用问题
函数定义:
void fun(const string &s){
如果调用fun("hello"),可以正确编译。但是如果把函数定义中的const去掉,则不能正确编译。
问字符数组"hello"是通过什么方式装换成const string &类型的,是某种强制转换吗?
我再C++ primer里没找到相关说明,如有知道的说明下哪本书,那页有说明。
按赞数排序
我知道了,在C++ primer第5版的 2.4.1节有说明,即引用类型与其所引用对象类型不一致时,编译器会生成一个临时的常量,所以如果引用不是const的,则会报错
"hello"就是const string类型不需要转换。
hello直接定义的常量字符串,这是直接初始化的,就是这个类型。
我觉得问题不是出在const上面,我认为是出在引用上面。引用是不能单独使用的,我建议你加入string str="hello";
fun(s)尝试一下
我知道了,在C++ primer第5版的 2.4.1节有说明,即引用类型与其所引用对象类型不一致时,编译器会生成一个临时的常量,所以如果引用不是const的,则会报错
其他相似问题传一个数组的引用 - C++ - language - ITeye论坛
传一个数组的引用
锁定老帖子
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
等级: 初级会员
文章: 1174
来自: 西安
发表时间:&&
相关知识库:
我们知道 给一个函数传入一个数组的时候需要传入一个附加的参数 用来标示数组的大小
void print(const unsigned short * const p, const size_t n) {
cout && "sizeof(p): " && sizeof(p) &&
for (size_t i = 0; i & ++i) {
cout && p[i] &&
int main() {
const unsigned short a[] = { 11, 22, 33, 44, 55 };
cout && "sizeof(a): " && sizeof(a) &&
cout && "sizeof(a[0]): " && sizeof(a[0]) &&
print(a, sizeof(a) / sizeof(a[0])); }
有没有什么办法不传入这个, 对了 就是数组的引用
void print(const unsigned short (& r)[5]) {
cout && "sizeof(r): " && sizeof(r) &&
for (size_t i = 0; i & sizeof(r) / sizeof(r[0]); ++i) {
cout && r[i] &&
int main() {
const unsigned short a[] = { 11, 22, 33, 44, 55 };
讲引用传入之后 也就讲数组的所有信息传入了, 可以用这样的方法把数组的大小来传入,
可是这样子还是很不好办,因为要是为每个长度的数组都写一个这样的函数,那我们就累都累死了..
该怎么办呢, 对了 我们想到了一个好的方法 模板
template &typename T, size_t N& void print(const T (& r)[N]) {
for (size_t i = 0; i & N; ++i) {
cout && r[i] &&
int main() {
const int c[] = { 1, 2, 4, 8 };
const double d[] = { 3.128, .57722 };
好的, 这样子看起来问题已经得到了很好的解决
可是熟悉模板的人一看就看出来问题了:如果这个函数的长度比较大,那么我们还是会在编译的时候为每个长度的数组创建一个函数,生成文件的大小还是会比较大,这么该怎么办呢?联想到了type_trails, 我们也可以做一个差不多的东西
template &typename T, size_t N& size_t length(const T (&)[N]) {
代码简单,尽量减少了需要的大小,应该来说是最好的解决方案了。为什么要说应该来说呢吗因为我们没用到STL 如果用到STL 中的Vector, 那么这么多事情我们也就不用来了。 呵呵
等级: 初级会员
文章: 1174
来自: 西安
发表时间:&&
奇怪哦 为什么第一个的代码都被弄成一行了啊...
请登录后投票
跳转论坛:移动开发技术
Web前端技术
Java企业应用
编程语言技术【引用】数组不能有引用 - 海山 - 博客园
今天在编写《编程之美》上的代码,遇到了如下的问题:
function(int &array[5])
void main()
int arr[5]={1,2,3,4,5};
function(arr);
为什么不正确呢??求真相~~
function(int &array[5])
形参的&,也就是引用是数组的引用,但是C++中没有数组的引用,即使改为:
function(int *&array) 也不对,因为实参是常量指针,不是形参的普通指针
function(int (&array)[5])
"数组引用"以避免"数组降阶"(本文曾贴于VCKBASE\C++论坛)
受[hpho]的一段模板函数的启发,特写此文,如有雷同,实在遗憾。数组降阶是个讨厌的事,这在C语言中是个无法解决的问题,先看一段代码,了解什么是"数组降阶"
#include &IOSTREAM&
void Test( char array[20] ){&&&&cout && sizeof(array) && // 输出 4}
int&main( void ){&&&&char array[20] = { 0 };&&&&cout && sizeof(array) && // 输出 20&&&&Test( array );}
为什么同样申明的array一个输出20一个输出4?这是因为void Test( char array[20] )中的array被降阶处理了,void Test( char array[20] )等同于void Test( char array[] ),也等同于void Test( char* const array ),如果你BT(开玩笑),它也等同于void Test( char array[999] )。就是说void Test( char array[20] ){&&&&cout && sizeof(array) &&}被降成void Test( char* const array ){&&&&cout && sizeof(array) && // 既然是char*,当然输出4}这样一来问题大了,你完全可以定义一个不足20个元素的数组,然后传给Test,坐等程序崩溃。在一些要求较高的场合就不能使用数组做参数,真TMD心有不甘。
那么在C语言中怎样解决这个问题?没办法,应该说没有好办法。a:做个结构,其中仅一个char array[20],然后用这个结构指针代替char array[20]。可见这是个很繁琐的办法,且不直观;b:在Test内部使用_msize来计算array长度。这更不行,首先它使得错误的发现被推迟到运行期,而不是编译期,其次_msize长度/元素大小&=array长度,也就是说就是new char[19]和new array[20]分配的大小是一样的,这样一来,虽不至于导致程序崩溃,但运算结果却不正确。
感谢[hpho],受其启发,C++中有C所没有的"引用",但数组引用是怎样申明的呢?经过几番试验,Look
#include &IOSTREAM&
void Test( char (&array)[20] ) // 是不是很像 char *p[20] 和 char (*p)[20] 的区别?{&&&&cout && sizeof(array) &&}
int&main( void ){&&&&char array[20] = { 0 };&&&&cout && sizeof(array) &&&&&&Test( array );}
传数组引用效率相当于传指针,而且包含更多信息,不是很好吗? 我不久前见过一个模板函数就和周星星的方法一样: template&class&T,size_t&N& &&&&&&&&void&Test(T&(&array)[N]) { &&&&&&&&cout&&typeid(T).name()&& &&&&&&&&cout&&N&& }
用了vector,编译器又会做很多东西, 但是更直观!支持vector
在网上看到一篇博客写到C++中不能建立数组的引用。因为数组是一个由若干个元素所组成的集合,所以无法建立一个数组的别名。
但是int a[3] ={10,20,30};
int (&b)[3] =
这段程序是可以执行通过的,而且b和a都指向同一个地址,b是不是a数组的引用呢?
不能建立数组的引用是说,数组的元素不能是引用。
int (&b)[3] =
b本身是一个引用,b不是数组。
b的引用是数组名a.
数组的元素是引用的数组是
int& b[3];
这样b才是数组,数组中元素才是引用。但是
int& b[3];
这样C++不支持,因为引用不可以作数组中的元素。
主要引用不可以作为数组元素的原因是它不支持传统意义的复制。
传统意义的复制:
a和b在内存中分别占用,内容一致。
这种复制,内存中a并不分配新的内存。C++ 传递数组给函数
C++ 不允许向函数传递一个完整的数组作为参数,但是,您可以通过指定不带索引的数组名来传递一个指向数组的指针。
如果您想要在函数中传递一个一维数组作为参数,您必须以下面三种方式来声明函数形式参数,这三种声明方式的结果是一样的,因为每种方式都会告诉编译器将要接收一个整型指针。同样地,您也可以传递一个多维数组作为形式参数。
形式参数是一个指针:
void myFunction(int *param)
形式参数是一个已定义大小的数组:
void myFunction(int param[10])
形式参数是一个未定义大小的数组:
void myFunction(int param[])
现在,让我们来看下面这个函数,它把数组作为参数,同时还传递了另一个参数,根据所传的参数,会返回数组中各元素的平均值:
double getAverage(int arr[], int size)
i, sum = 0;
for (i = 0; i & ++i)
sum += arr[i];
avg = double(sum) /
现在,让我们调用上面的函数,如下所示:
#include &iostream&
// 函数声明
double getAverage(int arr[], int size);
int main ()
// 带有 5 个元素的整型数组
int balance[5] = {, 17, 50};
// 传递一个指向数组的指针作为参数
avg = getAverage( balance, 5 ) ;
// 输出返回值
cout && "平均值是:" && avg &&
当上面的代码被编译和执行时,它会产生下列结果:
平均值是: 214.4
您可以看到,就函数而言,数组的长度是无关紧要的,因为 C++ 不会对形式参数执行边界检查。
反馈内容(*必填)
截图标记颜色
联系方式(邮箱)
联系邮箱:
投稿页面:
记住登录状态
重复输入密码

我要回帖

更多关于 华硕bios快速启动 的文章

 

随机推荐